package com.ants.modules.ArticleManage.entity;

import com.ants.common.annotation.Dict;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * TODO
 * Author Chen
 * Date   2021/9/7 18:44
 */
@Data
@TableName(value ="article_info")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "文章管理对象", description = "文章管理对象")
public class ArticleManage implements Serializable {
    /**
     * ID
     */
    @TableId
    private String id;

    /**
     * 标签
     */
    private String title;

    /**
     * 内容md
     */
    @TableField(exist = false)
    private String content;
    /**
     * 内容html
     */
    @TableField(exist = false)
    private String html;

    /**
     * 发布时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date publishTime;

    /**
     * 发布状态；1：已发布；2：定时发布；3：草稿；
     */
    @Dict(dicCode = "publish_state")
    private String publishState;

    /**
     * 分类
     */
    @Dict(dictTable = "article_sort", dicText = "name", dicCode = "id")
    private String articleSort;

    /**
     * 标签
     */
    @Dict(dictTable = "article_lable", dicText = "name", dicCode = "id")
    private String articleLable;

    /**
     * 点赞数
     */
    private Integer likesNum;
    /**
     * 收藏数
     */
    private Integer collectNum;

    /**
     * 浏览数
     */
    private Integer viewsNum;

    /**
     * 封面
     */
    private String cover;
    /**
     * 封面
     */
    @Dict(dicCode = "yn")
    private String isCover;
    /**
     * 文章类型
     */
    @Dict(dicCode = "article_type")
    private String articleType;
    /**
     * 发布形式
     */
    @Dict(dicCode = "publish_form")
    private String publishForm;
    /**
     * 原文链接
     */
    private String originalTextLink;
    /**
     * 原文是否允许转载，或者是否获得作者授权
     */
    @Dict(dicCode = "yn")
    private String isAuthorAuthorization;
    /**
     * 是否百度收录；1：是；0：否
     */
    @Dict(dicCode = "yn")
    private String isIncluded;
    /**
     * 是否推荐；1：是；0：否
     */
    @Dict(dicCode = "yn")
    private String isRecommend;
    /**
     * 删除状态 0未删除 1删除
     */
    @ApiModelProperty(value = "删除状态 0未删除 1删除")
//    @TableLogic
    @Dict(dicCode = "del_flag")
    private Integer delFlag;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 修改人
     */
    @ApiModelProperty(value = "创建人")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
    private String updateBy;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date updateTime;

    /**
     * 是否点赞
     */
    @TableField(exist = false)
    private String isLikes;
    /**
     * 是否收藏
     */
    @TableField(exist = false)
    private String isCollect;
    /**
     * 用户头像
     */
    @TableField(exist = false)
    private String userAvatar;
    /**
     * 是否关注
     */
    @TableField(exist = false)
    private Boolean isFollow;

    /**
     * 定时发布日期
     */
    @TableField(exist = false)
    private String quartzPushDate;

    /**
     * 定时发布时间
     */
    @TableField(exist = false)
    private String quartzPushTime;
    /**
     * 定时发布的文章，编辑时可以选择立即发布。true：立即发布；false：定时发布
     */
    @TableField(exist = false)
    private Boolean publishNowFlag;

    /**
     * 编辑器类型；1：MD编辑器；2：富文本编辑器
     */
    private String editorType;

    /**
     * 摘要
     */
    private String abstractText;
}
